package 继承.super关键字;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-16
 * Time: 15:38
 */
public class Derived extends Base {
    public int a;//与父类中成员变量同名且类型相同
    public char b;//与父类中成员变量同名且类型不相同

    public void methodA(int a) {
        System.out.println("Derived中的methodA(int)方法");
    }

    //与基类中的methodB()构成重写(即原型一致，重写后序会详细介绍)
    public void methodB() {
        System.out.println("Derived中的methodB()方法");
    }

    public void methodC() {
        //对于同名的成员变量，直接访问时，访问的都是子类
        a = 10;//等价于this.a = 10;
        b = 20;//等价于this.b = 20;
        //注意：this是当前对象的引用

        //访问父类的成员变量时，需要借助super关键字
        //super是获取到子类对象中从基类继承下来的部分
        super.a = 100;
        super.b = 200;

        //父类和子类构成重载的方法，直接可以通过参数列表区分访问父类还是子类方法
        methodA();//没有传参，访问父类中的methodA()
        methodA(20);//传递int参数，访问子类中的methodA(int)

        //如果在子类要访问重写的基类方法，则需要借助super关键字
        methodB();//直接访问，则永远访问的都是子类中的methodA(),基类的无法访问到
        super.methodA();//访问基类的methodB()
    }
}

/*
在子类方法中，如果想明确访问父类中的成员时，借助super关键字即可。
【注意】
    1. 只能在非静态方法中使用。
    2. 在子类方法中，访问父类的成员变量和方法。
 */
